SCEP协议简介

您所在的位置:网站首页 system center endpoint protection 下载 SCEP协议简介

SCEP协议简介

2023-08-01 07:36| 来源: 网络整理| 查看: 265

本篇绝大部分内容出自CISCO官方文档,本人对此协议理解也并不深刻,本人水平有限,有条件的请移步CISCO官方文档: https://www.cisco.com/c/en/us/support/docs/security-vpn/public-key-infrastructure-pki/116167-technote-scep-00.html

概述 SCEP(Simple certificate enrollment protocol), 简单证书注册协议,最初由CISCO起草,简而言之,就是一个用来注册数字证书的协议,“数字证书”本篇不再过多介绍。

SCEP的特点

基于HTTP的请求/响应模式(使用GET方法,POST也可以支持)只支持RSA加密(目前国际通用、使用广泛的公钥算法也就RSA, ECC, 而ECC是没有公钥加密,私钥解密标准的,我猜这个特点有这个原因吧)证书请求用PKCS #10标准(就是一个证书请求格式和数据标准,本篇不做介绍)采用PKCS #7标准传输签名/加密数据(HTTP请求非常不安全,容易被拦截,篡改)支持服务器异步授权,客户端定期轮询具有有限的证书吊销列表(CRL)检索支持(首选方法是通过CRL分发点(CDP)查询,出于可伸缩性原因)(翻译自官方文档,本人水平有限,对CRL还没有什么理解)不支持在线证书吊销需要在证书签名请求(CSR)中使用质询密码字段,该字段必须仅在服务器和请求者之间共享(翻译自官方文档,对这个也不是很清楚,知道的大佬还望不吝赐教哈)

证书注册过程简述

取得CA证书,并对其进行验证生成一个CSR(Certificate Signing Reques),并把它安全地传输到CA轮询SCEP服务器,检查证书是不是已经被签名了如果需要, 检索CRL

证书注册流程

客户端 :取得服务器CA证书: 客户端发送一个请求,通常的取得CA证书的请求格式 : GET /cgi-bin/pkiclient.exe?operation=GetCACert , 发送该请求后SCEP服务器会传回服务器的CA证书, 这时只是取得了服务器的CA证书,并没有做认证服务器 :返回CA证书给客户端客户端 :生成SCEP请求,发送给服务器: 证书签发请求最终会封装成一个HTTP请求通过GET方式发送给服务器, 格式类似:/cgi-bin/pkiclient.exe?operation=PKIOperation&message= MIIHCgYJKoZIhvcNAQcCoIIG%2BzCCBvcCAQExDjA… 请求很长,这里省略。 下面解析一下这个HTTP请求具体的内容: “message=” 后面是一串URL编码的请求字符串,对其进行URL解码后, 它将是一个base64编码的PKCS #7签名数据, 这个数据是被客户端签名的, 用以证明客户端确实发送了这段数据,且这段数据确实是客户端发送的,且在传输过程中没有被非法篡改… 总而言之, 是为了保证数据传输的完整、不可篡改、不可抵赖性 这段PKCS #7签名数据的内容:借CISCO官方图片一用,很清晰:SCEP请求消息 这张图我们从右向左来解释比较容易理解: 客户端本地生成一个基础的PKCS #10证书签发请求(CSR),这里不再多介绍,这里用一个随机生成的对称加密算法密钥对CSR进行加密,再用CA的公钥(从CA证书提取)加密这个对称密钥,再加上CA证书、版本号,这样就组合成了一个PKCS #7数字信封, 客户端用自己的私钥对这个数字信封做个签名,加上数字信封本身, 客户端自签名证书,哈希算法,版本号, 就组成了一个完整的PKCS #7签名数据, 对其进行编码后就是以上“message=”后面的数据了服务端响应 : 拒绝挂起成功:请求成功,服务器返回证书或CRL 服务器响应数据如下:在这里插入图片描述 从左往右看:同样是一个PKCS #7签名数据, 其中有CA证书,被签名的数据,签名, 哈希算法,客户端使用CA公钥对签名做认证,认证完成后取出被签名的数据,是一个PKCS #7数字信封,结构同上,客户端使用自己的私钥解密出其中包含的对称加密密钥,使用该密钥解密被解密的数据,再从中提取出签发的数字证书或CRL

下面介绍一下上面用到的SCEP请求格式: GET CGI-path/pkiclient.exe?operation=operation&message=message HTTP/version

CGI-path :指向处理SCEP请求的公共网关接口(CGI)程序(翻译有点怪,我还不太理解,总之是SCEP服务器的地址,端口,原文:“CGI-path is dependent on the server and points to the Common Gateway Interface (CGI) program that handles SCEP requests”)

operation:

PKIOperattion: 需要message字段, 它可以是以下类型: PKCSReq : PKCS #10 CSRGetCertInitial : 轮询CSR的是否已经签发证书GetCert / GetCRL : 取得证书或CRL GetCACert:获取CA证书, message字段可以省略

message:该字段可能是一个pkiMessage结构,是一个经过DER和base64编码的PKCS #7签名数据结构,它包含:

PKCS#7 SignedData 结构示意见上面两张图片PKCS#7 EnvelopedData 结构示意见上面两张图片 messageData : CSR, CRL,证书… SignerInfo with authenticatedAttributes:一些属性 transactionID, messageType, senderNonce :用于鉴别客户端身份,senderNonce 是一个一次性的随机数,发送者填充,收到响应后响应包中也有senderNonce, 可做进一步校验数据是否被篡改pkiStatus :仅在SCEP响应中有,标志当前请求的响应状态(0:成功,2:拒绝,3:挂起,等待审核)recipientNonce :接收者的Nonce, 也是一个一次性随机数failInfo : 仅在失败时有,标识失败原因


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3